#include <list> 
#include "Aircraft.h"  
#include "Employee.h"
#include "Flight.h"

#ifndef AIRLINEREP
#define AIRLINEREP

class AirlineRep : public Employee{

	private:
		std::string airline;
		

	protected:

	public:
		static std::list<Aircraft>* aircraftList;	//had to make this public for AirportManager
		static std::list<Flight>* pendingFlights;	//had to make this public for AirportManager
		static std::list<Flight>* cancelledFlights;	//had to make this public for AirportManager
		
		
		AirlineRep();
		AirlineRep(std::string, std::list<Aircraft>*);
		AirlineRep(std::string, std::string);
		~AirlineRep();
		std::string getAirline();
		void setAirline(std::string);
		
		int reqDailyInFlight(std::string flightID, int aircraftID, std::string srcAirport, /*Time* arrivalTime, */Time* landingTime);		//2.1
		int reqDailyOutFlight(std::string flightID, int aircraftID, std::string destAirport, /*Time* departureTime, */Time* takeOffTime);	//2.2
		int reqWeeklyInFlight(std::string flightID, int aircraftID, std::string srcAirport, /*Time* arrivalTime, */Time* landingTime);		//2.3
		int reqWeeklyOutFlight(std::string flightID, int aircraftID, std::string destAirport, /*Time* departureTime, */Time* takeOffTime);	//2.4
		int reqOneTimeInFlight(std::string flightID, int aircraftID, std::string srcAirport, /*Time* arrivalTime, */Time* landingTime);		//2.5
		int reqOneTimeOutFlight(std::string flightID, int aircraftID, std::string destAirport, /*Time* departureTime, */Time* takeOffTime);	//2.6
		//Flight* reqOutFlight(std::string, int, std::string, Time*, Time*, int);	//outdated
		int changeID(Flight*, int);	//2.7
		int cancelFlight(std::string);	//2.8
		int updateFlight(Flight*, std::string);	//2.9
		int issueDelay(Flight*, int);	//2.10
		//2.11 done from interface
		//2.12 not part of requirements anymore
		int removeAircraft(int);	//2.13
		int addAircraft(int, AircraftType*);	//2.14
		//void checkConflictingFlights();
		
		int changePassword(std::string, std::string);
		int emptyList();
		
};
#endif